﻿using System.Collections.Generic;
using System.Reflection;
using LogikBug.ModularMvc.Registration;

namespace LogikBug.ModularMvc
{
	public interface IModule : IDisposableObject
	{
		#region Properties

		object Key { get; }

		string Name { get; }

		decimal OrderPrecedence { get; }

		bool IsEnabled { get; set; }

		bool IsOptional { get; }

		Assembly Assembly { get; }

		IModuleProvider Provider { get; }

		IEnumerable<string> Resources { get; }

		#endregion

		#region Methods

		void Initialize(IModuleProvider provider, IRegistrationContext context);

		//void RegisterServices(IServiceLocator serviceLocator);

		#endregion
	}
}
